/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.myapp.model.DAO.Administrator.Comentarios;

import com.myapp.model.DAO.HibernateUtil;
import com.myapp.model.comentarios.Comentarios;
import com.myapp.model.estados.Estados;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

public class AdminComentarioDao {
     
    /**
     * Metodo para guardar o actualizar comentario
     * @param Comentarios c
     * @return Comentarios
     */
    
    public Comentarios newOrUpdateComentario(Comentarios c) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.saveOrUpdate(c);
            session.getTransaction().commit();
        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }

        return c;
    }
    
    /**
     * Metodo para buscar por ID de comentario
     * @param String idComentario, Comentarios c
     * @return Comentarios
     */
    
    public Comentarios buscarPorId(String idComentario, Comentarios c) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();

            //Consulta de comprobacion 
            c = (Comentarios) session.createCriteria(Comentarios.class).
                    add(Restrictions.eq("idcomentario", c.getIdcomentario())).uniqueResult();
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }
        return c;
    }
    
    /**
     * Metodo para buscar por ID de usuario
     * @param Comentarios c
     * @return Comentarios
     */
    
    public Comentarios search(Comentarios c) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();

            //Consulta de comprobacion 
            c=(Comentarios) session.createCriteria(Comentarios.class).
                    add(Restrictions.eq("idusuario", c.getUsuarios())).uniqueResult();
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }
        return c;
    }
    
    /**
     * Metodo para marcar como borrado un comentario cambiado su estado
     * @param Comentarios c
     */
        
    public void deleteComentario(Comentarios c)
    {
        //Obtener la sesión actual 
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            //Comenzar la transacción 
            session.beginTransaction();
            //localizarlo en la sesion
            Integer id = c.getIdcomentario();
            c = (Comentarios) session.get(Comentarios.class,id);
            
            byte b = 3; // A la espera de corregir el codigo correcto para desactivar un Comentario
            Estados e = new Estados();
            e.setIdestado(b);
            c.setEstados(e);
            //le cambiamos el estado a desactivado
            
            session.update(c);
            session.getTransaction().commit();
            
            } catch (HibernateException err) {
                session.getTransaction().rollback();
            } // fin catch
    } // fin metodo deleteUser
   
    
    /**
     * Metodo para crear una lista de comentarios
     * @return List
     */
    public List<Comentarios> listComentarios()
    {
        //Obtener la sesión actual 
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        List lista = null;
        try {
            //Comenzar la transacción 
            session.beginTransaction();
            //Obtener la lista de usuarios
            lista = session.createQuery("from comentarios").list();
            //Confirmar transacción 
            session.getTransaction().commit();
        } catch (HibernateException err){
            session.getTransaction().rollback();
        } 
        return lista;
    }  // fin listar       
}
